#pragma once
#ifdef UNICODE
#define CREATEWINDOW CreateWindowW
#else
#define CREATEWINDOW CreateWindowA
#endif
#include <windows.h>                                                                                                    //  引入 windows.h
#include <string>                                                                                                       // 引入字符串类
#include <richedit.h>                                                                                                   // 引入 richedit.h
#include <shellapi.h>                                                                                                   // 引入 Shell API
#include <locale>                                                                                                       // 本地化
#include <codecvt>                                                                                                      //  字符串转换
#include <shlobj.h>                                                                                                     // SHGetFolderPathW
#include <tchar.h>                                                                                                      // 引入 TCHAR
#include <vector>                                                                                                       // 引入向量容器

void Auto_load_ICO(HWND hwndWindows);                                                                                   // 自动加载图标
BOOL InitializeWindowClass(HINSTANCE hInstance, const wchar_t *windowClass);                                            //  初始化窗口类
HWND CreateWindows(HINSTANCE hInstance, const wchar_t *windowClass, const wchar_t *windowTitle, int width, int height); //  创建窗口
int RunMessageLoop();                                                                                                   //  运行消息循环
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);                                        //  窗口处理函数

void Button_Event(HWND hwnd, WPARAM wParam, LPARAM lParam); // 按钮事件处理
void Drop_To_Display_Path(HWND hwnd, WPARAM wParam);        // 拖拽事件处理
std::wstring string_to_wstring(const std::string &str);     // string_to_wstring 字符串转换
std::string wstring_to_string(const wchar_t *wstr);         // wstring_to_string字符串转换